package com.cw.java8.stream;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 流式操作05
 *
 */
public class StreamTest05 {

    public static void main(String[] args) {
        /*
         * 需求：有一个用户集合，找到id大于1的用户后，然后按照ID从大到小排序，
         * 之后获取每个用户的姓名,并将数据存放到一个新的List<String>集合中
         */
        List<Users> usersList = new ArrayList<>();
        usersList.add(new Users(1, "张三"));
        usersList.add(new Users(2, "李四"));
        usersList.add(new Users(3, "王五"));

        //1.传统编写模式
        List<Users> newUsersList = new ArrayList<>();
        //找到ID大于1的用户，并存入集合中
        for (Users users : usersList) {
            if (users.getId() > 1) {
                newUsersList.add(users);
            }
        }

        //进行排序
        newUsersList.sort((Users user1, Users user2) -> user2.getId().compareTo(user1.getId()));

        //取出用户名称 放入新的集合中
        List<String> usersNameList1 = new ArrayList<>();
        for(Users users : newUsersList){
            usersNameList1.add(users.getName());
        }

        for (String s : usersNameList1) {
            System.out.println(s);
        }

        System.out.println("------------------------------");

        //2.使用流式编程模式
        List<String> usersNameList = usersList.stream()
                .filter((Users user) -> user.getId() > 1)
                .sorted((Users user1, Users user2) -> user2.getId().compareTo(user1.getId()))
                .map(users -> users.getName()).collect(Collectors.toList());

        usersNameList.forEach(System.out::println);

    }
}
